using System;

namespace Think.Problems
{
    public interface IRule
    {
        /// <summary>
        /// Whether the given travelling card (<paramref name="a_travelling"/>) can be set upon the given base card 
        ///     (<paramref name="a_base"/>).
        /// </summary>
        /// <param name="a_base">Base card.</param>
        /// <param name="a_travelling">Travelling card.</param>
        /// <returns>True if travelling card can be set.</returns>
        bool CanSet(String a_base, String a_travelling);

        /// <summary>
        /// Whether the given travelling card (<paramref name="a_travelling"/>) can be set on an empty tableau.
        /// </summary>
        /// <param name="a_travelling">Travelling card.</param>
        /// <returns>True if travelling card can be set.</returns>
        bool CanSetOnEmpty(String a_travelling);
    }
}